package com.jvtd.utils;

import android.text.InputFilter;
import android.text.Spanned;
import android.widget.EditText;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EditTextUtils {

    /**
     * 设置输入框是否可触控
     *
     * @author Chenlei
     * created at 2018/9/14
     **/
    public static void setEnabled(EditText editText, boolean isEnabled) {
        editText.setCursorVisible(isEnabled);
        editText.setFocusable(isEnabled);
        editText.setFocusableInTouchMode(isEnabled);
        if (isEnabled)
            editText.requestFocus();
    }

    /**
     * 设置输入框最大长度
     *
     * @author Chenlei
     * created at 2018/9/17
     **/
    public static void setMaxLength(EditText editText, int maxNum){
        List<InputFilter> filters = Arrays.asList(editText.getFilters());
        List<InputFilter> filterList = new ArrayList<>(filters);
        filterList.add(new InputFilter.LengthFilter(maxNum));
        editText.setFilters(filterList.toArray(new InputFilter[filterList.size()]));
    }

    /**
     * 屏蔽emoji
     *
     * @author Chenlei
     * created at 2018/10/18
     **/
    public static void shieldingEmoji(EditText editText){
        InputFilter emojiFilter = new InputFilter()
        {

            Pattern emoji = Pattern.compile
                    ("[\\uD83C\\uDF00-\\uD83D\\uDDFF]|[\\uD83E\\uDD00-\\uD83E\\uDDFF]|[\\uD83D\\uDE00-\\uD83D\\uDE4F]|[\\uD83D\\uDE80-\\uD83D\\uDEFF]|[\\u2600-\\u26FF]\\uFE0F?|[\\u2700-\\u27BF]\\uFE0F?|\\u24C2\\uFE0F?|[\\uD83C\\uDDE6-\\uD83C\\uDDFF]{1,2}|[\\uD83C\\uDD70\\uD83C\\uDD71\\uD83C\\uDD7E\\uD83C\\uDD7F\\uD83C\\uDD8E\\uD83C\\uDD91-\\uD83C\\uDD9A]\\uFE0F?|[\\u0023\\u002A\\u0030-\\u0039]\\uFE0F?\\u20E3|[\\u2194-\\u2199\\u21A9-\\u21AA]\\uFE0F?|[\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55]\\uFE0F?|[\\u2934\\u2935]\\uFE0F?|[\\u3030\\u303D]\\uFE0F?|[\\u3297\\u3299]\\uFE0F?|[\\uD83C\\uDE01\\uD83C\\uDE02\\uD83C\\uDE1A\\uD83C\\uDE2F\\uD83C\\uDE32-\\uD83C\\uDE3A\\uD83C\\uDE50\\uD83C\\uDE51]\\uFE0F?|[\\u203C\\u2049]\\uFE0F?|[\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE]\\uFE0F?|[\\u00A9\\u00AE]\\uFE0F?|[\\u2122\\u2139]\\uFE0F?|\\uD83C\\uDC04\\uFE0F?|\\uD83C\\uDCCF\\uFE0F?|[\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA]\\uFE0F?",
                            Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);

            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int
                    dstart, int dend)
            {
                Matcher emojiMatcher = emoji.matcher(source);
                if (emojiMatcher.find())
                {
                    return "";
                }
                return null;
            }
        };
        List<InputFilter> filters = Arrays.asList(editText.getFilters());
        List<InputFilter> filterList = new ArrayList<>(filters);
        filterList.add(emojiFilter);
        editText.setFilters(filterList.toArray(new InputFilter[filterList.size()]));
    }
}
